package com.zzh.partnersys.es.service;

import com.zzh.partnersys.entity.TeamDO;
import com.zzh.partnersys.entity.UserDO;

import java.util.List;

/**
 * ES 数据同步服务接口
 *
 * @author zzh
 */
public interface ElasticsearchSyncService {

    /**
     * 同步用户数据到 ES（创建或更新）
     *
     * @param userDO 用户实体
     */
    void syncUserToEs(UserDO userDO);

    /**
     * 同步队伍数据到 ES（创建或更新）
     *
     * @param teamDO 队伍实体
     */
    void syncTeamToEs(TeamDO teamDO);

    /**
     * 更新队伍的 tags（当用户加入或离开队伍时调用）
     *
     * @param teamId 队伍ID
     */
    void updateTeamTags(Long teamId);

    /**
     * 删除 ES 中的用户文档
     *
     * @param userId 用户ID
     */
    void deleteUserFromEs(Long userId);

    /**
     * 删除 ES 中的队伍文档
     *
     * @param teamId 队伍ID
     */
    void deleteTeamFromEs(Long teamId);

    /**
     * 批量同步用户数据到 ES
     *
     * @param userDOList 用户实体列表
     */
    void batchSyncUsersToEs(List<UserDO> userDOList);

    /**
     * 批量同步队伍数据到 ES
     *
     * @param teamDOList 队伍实体列表
     */
    void batchSyncTeamsToEs(List<TeamDO> teamDOList);

    /**
     * 批量删除 ES 中的用户文档
     *
     * @param userIdList 用户ID列表
     */
    void batchDeleteUsersFromEs(List<Long> userIdList);

    /**
     * 批量删除 ES 中的队伍文档
     *
     * @param teamIdList 队伍ID列表
     */
    void batchDeleteTeamsFromEs(List<Long> teamIdList);
}

